const {
    whiteList
} = require('../config'), {
    vertifyToken,
    getUser
} = require('../utils');

exports.checkLogin = async (ctx, next) => {
    // 非登录、退出
    // 需要检查的
    console.log('url:', ctx.url);
    if (!whiteList.includes(ctx.url)) {
        const {token} = ctx.headers;
        let tokenIndex = ctx.blackTokenList.indexOf(token)
        // 验证token
        if (!vertifyToken(token)) {
            //弹出这个元素,不允许访问,重新获取token
            ctx.blackTokenList.splice(tokenIndex, 1)
            return ctx.tokenExpires('无效token,请登录再试！');
        } else {
            // 黑名单: 退出后的token
            if (tokenIndex != -1) return ctx.tokenExpires('token已失效,请重新登录！');
            // 解析token并存储到ctx的上面, ctx.state 本次请求的共享数据
            ctx.state.user = getUser(token);
        }
    }
    await next();
}
/*
// 102失败 20000 成功 603:权限有问题，需要重定向
// success faild tokenExpires
exports.responseHandler =async (ctx, next)=>{
    ctx.success= (data)=> {
        ctx.body={
            code: 20000,
            data
        }
    }
    ctx.faild=(data)=>{
        ctx.body={
            code: 102,
            data
        }
    }
    ctx.tokenExpires=(data)=>{
        ctx.body={
            code: 603,
            data
        }
    }
    // 尽量 await next()
    await next()
}
*/